// 滚动条, 设置背景, 获取滚动条上的三个按钮并加以改变
package main

import (
	"fmt"
	xc "gitee.com/go_888/xcgui/xcgui/xc"

	app "gitee.com/go_888/xcgui/xcgui/app"
	widget "gitee.com/go_888/xcgui/xcgui/widget"
	window "gitee.com/go_888/xcgui/xcgui/window"
	xcc "gitee.com/go_888/xcgui/xcgui/xcc"
)

func main() {
	a := app.X创建(true)
	a.X启用DPI(true)
	a.X启用自动DPI(true)
	w := window.X创建窗口(0, 0, 430, 300, "ScrollBar", 0, xcc.X窗口样式_默认样式)

	// 创建滚动条
	bar1 := widget.X创建滚动条(12, 33, 300, 20, w.X句柄)
	bar2 := widget.X创建滚动条(330, 33, 20, 240, w.X句柄)

	// 设置为垂直滚动条
	bar2.X设置水平(false)
	// 添加背景
	bar2.X添加背景填充(xcc.X组合状态_元素_鼠标离开, xc.RGBA颜色(247, 248, 250, 255))

	// 获取滑块按钮
	btnSlider := widget.X创建按钮并按句柄(bar2.X取滑块())
	btnSlider.X添加背景填充(xcc.X组合状态_按钮_鼠标离开, xc.RGBA颜色(221, 221, 223, 255))
	btnSlider.X添加背景填充(xcc.X组合状态_按钮_鼠标停留, xc.RGBA颜色(202, 202, 204, 255))
	btnSlider.X添加背景填充(xcc.X组合状态_按钮_鼠标按下, xc.RGBA颜色(202, 202, 204, 255))
	// 获取滚动条上按钮
	btnUp := widget.X创建按钮并按句柄(bar2.X取上按钮())
	btnUp.X添加背景填充(xcc.X组合状态_按钮_鼠标离开, xc.RGBA颜色(137, 140, 151, 255))
	btnUp.X添加背景填充(xcc.X组合状态_按钮_鼠标停留, xc.RGBA颜色(255, 135, 250, 255))
	btnUp.X添加背景填充(xcc.X组合状态_按钮_鼠标按下, xc.RGBA颜色(255, 75, 250, 255))
	// 获取滚动条下按钮
	btnDown := widget.X创建按钮并按句柄(bar2.X取下按钮())
	btnDown.X添加背景填充(xcc.X组合状态_按钮_鼠标离开, xc.RGBA颜色(137, 140, 151, 255))
	btnDown.X添加背景填充(xcc.X组合状态_按钮_鼠标停留, xc.RGBA颜色(255, 135, 250, 255))
	btnDown.X添加背景填充(xcc.X组合状态_按钮_鼠标按下, xc.RGBA颜色(255, 75, 250, 255))
	// 因为上下按钮背景改变了, 你可以自己准备图片设置到按钮上去
	// btnDown.SetIcon()  或  btnDown.AddBkImage()

	// 注册滚动条元素滚动事件
	bar1.X事件_滚动1(SBAR_SCROLL1)
	bar2.X事件_滚动1(SBAR_SCROLL1)

	w.X显示方式(xcc.SW_SHOW)
	a.X运行()
	a.X退出()
}

// 滚动条元素滚动事件
func SBAR_SCROLL1(hEle int, pos int32, pbHandled *bool) int {
	fmt.Println(pos)
	// 为了鼠标滚轮滚动和点击两端按钮实时显示效果而刷新
	xc.X元素_重绘(hEle, false)
	return 0
}
